// 引入
const sm2 = require('sm-crypto').sm2
const cipherMode = 1 // 1 - C1C3C2，0 - C1C2C3，默认为1 // 控制加密结果的排列顺序

// 后端会生成密钥对
// publicKey：公钥 后端提供
// privateKey：私钥 后端提供
const publicKey =
	"04fe4619e8290a592c249e4446d63380b0027c0ceaa79ac4cd46c0077290d1b32d810b9f2a4c90c7ef30ddcc1f3705ccb64801e9c5285ec6907bbcddfab4835e1d"
const privateKey = "008f376b877c6fd055db71339a2530c40af1603ed104fdf338847fe25f9ec77fa5"

// 加密
// value：需要加密的内容
export function encrypt(value) {
	// 给后端传值时需要在加密的密文前面加04 ,这样后端才能解密正确不报错
	return sm2.doEncrypt(value, publicKey, cipherMode)
}

// 解密
// value：需要解密的密文
export function decrypt(value) {
	// 后端传输过来的密文开头的两个字符通常也为04，因此解密时需要删除
	return sm2.doDecrypt(value.slice(2, value.length), privateKey, cipherMode)
}

// 引入sm2.js，注意文件路径不要出错
// import { encrypt, decrypt } from './sm2'

// data：需要加密的数据
// encryptData：加密后的密文
// 若有需要则将js对象转换为字符串后进行加密：JSON.stringify(data)
// const encryptData = encrypt(JSON.stringify(data))

// data：需要解密的密文
// decryptData：解密后的数据
// 若解密结果为json字符串，则可以通过JSON.parse()方法将解密结果转化为json对象
// const decryptData = decrypt(data)